# 在需要的时候，你可以重新加载模型  
import pandas as pd
from keras.models import load_model
from sklearn.preprocessing import MinMaxScaler
from flask import Flask, request


def pressure_index_analysis(new_data):
    # 读取数据
    df = pd.read_excel('datas.xlsx', engine='openpyxl')  # 假设文件名为datas.xlsx
    # 选择特征和目标变量
    X = df[['正面信息', '负面信息', '中性信息', '拥堵指数', '物价指数']].values

    # 数据标准化
    scaler = MinMaxScaler()
    X = scaler.fit_transform(X)

    # 加载模型
    loaded_model = load_model('my_model.h5')

    # 假设你有一个新的数据点，存储在字典中
    # 将这个数据点转换为DataFrame
    new_data_df = pd.DataFrame([new_data])

    # 使用相同的scaler（用于训练数据的scaler）来转换新数据
    new_data_scaled = scaler.transform(new_data_df[['正面信息', '负面信息', '中性信息', '拥堵指数', '物价指数']])

    # 确保新数据的形状是正确的，即它是一个二维数组，即使只有一个样本
    new_data_scaled = new_data_scaled.reshape(1, -1)  # 转换为(1, 5)的形状

    # 现在你可以使用loaded_model来预测新的数据
    predictions = loaded_model.predict(new_data_scaled)

    # 打印预测结果
    print(f"Predicted 承压指数: {predictions[0][0]}")

    return predictions[0][0]


app = Flask(__name__)


# SnowNLP提取摘要
@app.route('/get_pressure_index/', methods=['POST'])
def get_pressure_index():
    positiveCount = request.form['positiveCount']
    neutralCount = request.form['neutralCount']
    negativeCount = request.form['negativeCount']
    congestionIndex = request.form['congestionIndex ']
    priceIndex = request.form['priceIndex']
    entity = {
        '正面信息': positiveCount,
        '负面信息': negativeCount,
        '中性信息': neutralCount,
        '拥堵指数': congestionIndex,
        '物价指数': priceIndex
    }
    return pressure_index_analysis(entity)


if __name__ == "__main__":
    app.config['JSON_AS_ASCII'] = False
    # 将host设置为0.0.0.0，则外网用户也可以访问到这个服务
    app.run(host="0.0.0.0", port=5333, debug=False)
